home *** CD-ROM | disk | FTP | other *** search
- unit TimeSet;
-
- interface
-
- procedure SetTime(Time: TDateTime);
-
- procedure SetDate(Date: TDateTime);
-
- procedure SetNow(DateTime: TDateTime);
-
- implementation
-
- {$ifdef Windows}
-
- uses
- SysUtils;
-
- procedure SetTime(Time: TDateTime);
- var
- Hour, Min, Sec, HSec: Word;
- begin
- DecodeTime(Time, Hour, Min, Sec, HSec);
- HSec := HSec div 10;
- asm
- mov ch, Byte(Hour)
- mov cl, Byte(Min)
- mov dh, Byte(Sec)
- mov dl, Byte(HSec)
- mov ah, $2D
- int $21
- end;
- end;
-
- procedure SetDate(Date: TDateTime);
- var
- Year: Word;
- Month, Day: Word;
- begin
- DecodeDate(Date, Year, Month, Day);
- asm
- mov cx, Year
- mov dh, Byte(Month)
- mov dl, Byte(Day)
- mov ah, $2B
- int $21
- end;
- end;
-
- procedure SetNow(DateTime: TDateTime);
- begin
- SetDate(Int(DateTime));
- SetTime(Frac(DateTime))
- end;
-
- {$else}
-
- uses
- SysUtils, Windows;
-
- procedure SetNow(DateTime: TDateTime);
- var
- ST: TSystemTime;
- begin
- with ST do
- begin
- DecodeDate(DateTime, wYear, wMonth, wDay);
- DecodeTime(DateTime, wHour, wMinute, wSecond, wMilliSeconds);
- end;
- if not SetLocalTime(ST) then
- raise Exception.Create(SysErrorMessage(GetLastError));
- end;
-
- procedure SetTime(Time: TDateTime);
- begin
- //Use passed in time + system date
- SetNow(Time + Date)
- end;
-
- procedure SetDate(Date: TDateTime);
- begin
- //Use passed in date + system time
- SetNow(Time + Date)
- end;
-
- {$endif}
-
- end.
-